package com.baishancloud.log.douyin.demand1

import scala.beans.BeanProperty

/**
 *
 * @author ziqiang.wang 
 * @date 2022/3/1 11:16
 */
class Calculate extends Serializable


/**
 * 入 maralla 的tag，也就是需求中的维度字段
 *
 * @param domain      域名字符串
 * @param isp         运营商字符串
 * @param cache_group cache组
 */
case class Tags(@BeanProperty domain: String, @BeanProperty isp: String, @BeanProperty cache_group: String) extends Serializable

/**
 * 入 maralla 的 fields，写入其他数据
 *
 * @param unusual_value 异常请求数
 */
case class Fields(@BeanProperty unusual_value: Long)

/**
 * 入 maralla 的数据对象
 *
 * @param time     时间，1min，秒值
 * @param step     步长，固定60
 * @param name     监控图表查询的表名
 * @param endpoint 上报数据的主机的机器名，为空自动补充
 * @param value    数值，该需求中表示总请求书
 * @param tags     标签，所有维度
 * @param fields   上报的主要数据
 */
case class Result1(@BeanProperty time: Long, @BeanProperty step: Long, @BeanProperty name: String, @BeanProperty endpoint: String, @BeanProperty value: Long, @BeanProperty tags: Tags, @BeanProperty fields: Fields) extends Serializable {
  def getKey: ResultKey1 = {
    ResultKey1(time, tags.domain, tags.isp, tags.cache_group)
  }
}


/**
 * 结果值的key，用来对数据进行keyBy
 *
 * @param time        数据时间，1min，秒值
 * @param domain      域名
 * @param isp         运营商
 * @param cache_group cache组
 */
case class ResultKey1(time: Long, domain: String, isp: String, cache_group: String) extends Serializable



